/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.colegiatura.bc.TituloDelegate;
import org.cip.esymons.general.be.Especialidad;
import org.cip.esymons.general.be.Titulo;
import org.cip.esymons.general.util.ControladorAbstracto;

/**
 *
 * @author ADMINISTRADOR
 */
public class tituloController {

    private TituloDelegate delegado;
    private Titulo titulo;
    private Especialidad esp;

    public tituloController() {

        delegado = new TituloDelegate();
        titulo = new Titulo();
        esp = new Especialidad();
    }

    public TituloDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(TituloDelegate delegado) {
        this.delegado = delegado;
    }

    public Titulo getTitulo() {
        return titulo;
    }

    public void setTitulo(Titulo titulo) {
        this.titulo = titulo;
    }

    public Especialidad getEsp() {
        return esp;
    }

    public void setEsp(Especialidad esp) {
        this.esp = esp;
    }

    public Titulo buscaPorCodigo(Integer codigo){

        return delegado.find(codigo);
    }

    public List<Titulo> getListaTitulo(){

        return delegado.findAll();
    }

    public String nuevo(){

        titulo = new Titulo();
        return "nuevo";
    }

    public String grabar(){

        try{
        delegado.create(titulo);
        titulo = new Titulo();
        getListaTitulo();
        mostrarMensaje("INFO: ", "Título registrado satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "listar";
        }catch(Exception ex){
            return null;
        }
    }

    public String editar(){

        try{
        delegado.edit(titulo);
        titulo = new Titulo();
        mostrarMensaje("INFO: ", "Título actualizado satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "listar";
        }catch(Exception ex){
            return null;
        }
    }

    public String remover(){

        try{
        delegado.remove(titulo);
        titulo = new Titulo();
        return null;
        }catch(Exception ex){
            return null;
        }
    }

    public SelectItem[] getSelectListaTitulos(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Titulo> listatitulo = delegado.findAll();
        selects = new SelectItem[listatitulo.size()];
        int cont = 0;
        for(Titulo tit : listatitulo){

            SelectItem item = new SelectItem(tit, tit.getTitNombre());
            selects[cont] = item;
            cont++;
        }

        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen titulos");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaTitulo(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Titulo> listatitulo = delegado.buscaPorEspecialidad(esp);
        selects = new SelectItem[listatitulo.size()];
        int cont = 0;
        for(Titulo tit : listatitulo){
            
            SelectItem item = new SelectItem(tit.getTitCodigo(), tit.getTitNombre());
            selects[cont] = item;
            cont++;
        }
        
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen titulos");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaTituloPorEsp(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Titulo> listatitulo = delegado.buscaPorEspecialidad(esp);
        selects = new SelectItem[listatitulo.size()];
        int cont = 0;
        for(Titulo tit : listatitulo){

            SelectItem item = new SelectItem(tit, tit.getTitNombre());
            selects[cont] = item;
            cont++;
        }

        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen titulos");
            selects[0] = item;
            return selects;
      }

    }


    public SelectItem[] getSelectListaTituloActualizacion(){

      try{
        actualizaDatosController ad = (actualizaDatosController) ControladorAbstracto.getBean("actualizaDatosController");

//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Titulo> listatitulo = delegado.buscaPorEspecialidad(ad.getFormacion().getEspCodigo());
        selects = new SelectItem[listatitulo.size()];
        int cont = 0;
        for(Titulo tit : listatitulo){

            SelectItem item = new SelectItem(tit, tit.getTitNombre());
            selects[cont] = item;
            cont++;
        }

        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen titulos");
            selects[0] = item;
            return selects;
      }

    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

}
